Conversation
This reduces the time to get `src` transpiled and fully type checked to around 15seconds on my machine
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Use `tsgo` to run type checks on client for watch
Agents app - remove settings sync uxcontributions - add remove button to chat tabs
Add back basic rendering of contributed chat status items
Update distro commit to 0cd3df03 Co-authored-by: vs-code-engineering[bot] <122617954+vs-code-engineering[bot]@users.noreply.github.com>
… stop premature turn termination (#311591)
… grouping (#311728) * feat: add leakWarningName to emitters with custom leak thresholds Add emitter name identification to ListenerLeakError and ListenerRefusalError messages for better error telemetry grouping. - Add leakWarningName option to EmitterOptions - Thread emitter name through LeakageMonitor to error constructors - Prefix error messages with [emitterName] when provided - Add leakWarningName to all 8 emitters with custom leakWarningThreshold Ref: #305051 * fix: only prefix error message when explicit leakWarningName is provided Address Copilot review feedback: - Derive emitterName by checking if name matches hex-ID pattern; pass undefined when it does to preserve backward-compatible messages - ListenerRefusalError uses this._options?.leakWarningName directly instead of the monitor's generated name - Update doc comment on details field to reflect new grouping behavior
We need to match the new tsgo error format now too
* Support Controller API sessions in Agents App 1. use the new api to create a session 2. make sure those Claude sessions are setting the correct metadata that Agents need 3. document this hidden special contract that we've depended on Co-authored-by: Copilot <copilot@github.com> * feedback * simplify * feedback --------- Co-authored-by: Copilot <copilot@github.com>
* Refactor chat send button styles for improved gradient effects and hover interactions Co-authored-by: Copilot <copilot@github.com> * Enhance chat send button gradient and animation duration for improved visual effects Co-authored-by: Copilot <copilot@github.com> * Update chat input working border colors for improved visibility and consistency --------- Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com> Co-authored-by: Copilot <copilot@github.com>
Remove deprecated properties for chat sessions proposal
…k event (#311718) - Add dedicated messagesApi.refusal telemetry event that fires on Anthropic refusals, capturing the stop_details category (e.g. cyber, content_policy) - Parse stop_details from message_delta stream events - Remove messagesApi.unknownContentBlock telemetry which was firing on every text content_block_start, producing noise instead of actionable signal
Fix watch task matcher for tsgo
…l-from-source-disposal Fix InstallFromSourceAction disposal and accessor errors
… before uri (#311752) * agentHost: fix ah diffs not showing for historic sessions and missing before uri * test: add listSessions diffs round-trip test coverage
* Don't restore agents window from previous session The agents window should only be opened via --agents. Previously, if the agents workspace was the last opened window, window.restoreWindows would restore it on every subsequent launch, making the agents app 'sticky'. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Inline agents window filter into workspace restore branch Move the agents workspace check into the existing workspace branch of the map callback instead of a separate pre-pass over the array. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
* Generalize model picker to be used with Claude So that it has a model picker on the welcome chat. Co-authored-by: Copilot <copilot@github.com> * feedback --------- Co-authored-by: Copilot <copilot@github.com>
* Expose parentSessionId in metadata and use for session grouping - Add getParentSessionId to IChatSessionMetadataStore interface and implementation - Include parentSessionId in session item metadata for both worktree and workspace sessions - Replace SessionsGroupModel with metadata-driven grouping in CopilotChatSessionsProvider - Derive session groups from parentSessionId in agent session metadata - Use temp parent mapping for uncommitted sessions during commit flow Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove _tempParentChatIds map, derive grouping from selectedOptions Read parent session ID directly from PARENT_SESSION_OPTION_ID in selectedOptions for uncommitted sessions instead of maintaining a separate tracking map. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Delete unused SessionsGroupModel and its tests Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Order grouped chats by creation time Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add grouping regression tests for Copilot chat sessions - cover grouping via sessionParentId metadata - verify chats are ordered by createdAt within a group - ensure orphaned child sessions are still surfaced Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Stabilize Copilot chat session grouping Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Cache Copilot chat session grouping Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ttern (#311768) * improve instructions index Co-authored-by: Copilot <copilot@github.com> * update * Update src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Adds a promptTypes property to summarizedConversationHistory telemetry events, mirroring the same property already on panel.request events. This is a comma-separated string of role:charCount entries (e.g. system:1234,user:567) representing each message in the summarization request in order. This helps correlate cache hit rates with prompt structure divergence across summarization calls, giving visibility into where prompts diverged from the previous request. Changes: - summarizedConversationHistory.tsx: added promptTypes to sendSummarizationTelemetry using post-transformation messages (after strip operations) - agentIntent.ts: added promptTypes to inline summarization success telemetry
…311600) * Allow local agent host and Copilot CLI sessions providers to coexist When chat.agentHost.enabled is true, register both the local agent host provider and the extension-host Copilot CLI provider instead of suppressing the latter. Each provider already filters to its own owned sessions (database-existence on the agent host side, session metadata origin on the extension side), so the lists are disjoint. Also tag local agent host workspaces with [Local] in the sidebar to match the existing remote agent host pattern (${folderName} [${label}]). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Drop [Local] tag from local agent host session type label The session type id (e.g. `copilotcli`) is shared between the local agent host and the extension-host Copilot CLI provider, so a single filter-menu / new-session-picker entry covers sessions from both. Tagging it as `Copilot [Local]` was misleading. The `[Local]` tag remains on the per-session workspace label in the sidebar, where it correctly disambiguates individual sessions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix merge artifact: remove stale _groupModel reference The _groupModel property was removed upstream in 6101c49 but one call site survived the merge. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Changing upgrade hover for Pro users
* Add ChatResponseInfoPart proposed API and stream.info() Add a new 'info' chat content kind that mirrors the existing 'warning' path and renders via ChatErrorContentPart with ChatErrorLevel.Info, which already has blue notification styling (.chat-info-codicon). Expose this via a new ChatResponseInfoPart proposed API and stream.info() method. Cherry-picked from 87ce530 (src/vs and src/vscode-dts parts only). * Disable github.copilot.chat.cli.remote.enabled in agents window The /remote slash command targets the CLI chat in the main workbench. Explicitly keep it disabled in the agents sessions app via the session configurationDefaultsOverrides. * Adopt types in copilot ext
* Add agent host filter dropdown to Agents web titlebar Adds a dropdown indicator next to the Toggle Primary Side Bar Visibility button that shows which remote agent host the workbench is scoped to. Picking a host (or 'All Hosts') filters the sessions list by providerId. The UI is web-only; the filter service is registered in common so the SessionsList DI always resolves (defaults to 'All Hosts' on desktop). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add connection status indicator to host filter dropdown Shows a green debug-connected codicon when the selected host is connected, and a clickable debug-disconnect codicon when disconnected (clicking it triggers reconnect). While connecting the icon pulses and is non-interactive. The indicator is only shown when a specific host is selected (hidden for 'All Hosts'). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split connect button from host filter dropdown, fill sidebar width The compound widget now lays out as [dropdown pill][flex-spacer][connect button] and stretches to fill the left-toolbar-container width, which already tracks the sidebar width. The connect/disconnect button is a separate, independently clickable element flush against the right edge so it lines up with the sidebar's right border (and the chat input border below it). The dropdown pill (click to pick host) and the connect button (click to reconnect when disconnected) have their own hover and click handlers so each one is clearly actionable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update * update * Gate web Co-authored-by: Copilot <copilot@github.com> * Test fixes and review comments Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <copilot@github.com>
* Fix listener leak in FocusSessionActionViewItem Listeners added to debug sessions (onDidChangeName/onDidEndAdapter) in the constructor were not tied to the view item's lifetime. Since debug sessions outlive the action view item (recreated on toolbar updates), each recreation piled more listeners onto the same sessions, eventually triggering the 'potential listener LEAK detected' warning. Route all per-session listeners through a DisposableStore owned by the view item so they are released when the view item is disposed, while still self-cleaning when the session ends. Fixes #308534 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address Copilot review: remove child store from parent on session end Use sessionListenersStore.delete() instead of sessionListeners.dispose() so that ended sessions don't accumulate disposed stores in the parent. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Empty commit to retrigger CI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* claude extension contributes dropdown to permission picker * address comments * don't add default * remove context key * contribute slash commands to api * dont set default * Apply suggestion from @TylerLeonhardt Co-authored-by: Tyler James Leonhardt <2644648+TylerLeonhardt@users.noreply.github.com> * don't show in permission in cloud --------- Co-authored-by: Tyler James Leonhardt <2644648+TylerLeonhardt@users.noreply.github.com>
* Lazily create chat code block toolbar (#311561) The MenuWorkbenchToolBar in CodeBlockPart was created eagerly in the constructor, which subscribes to the menu's onDidChange and in turn adds listeners on MenuService's shared hiddenStates emitter and the context key service. In large chat responses with many code blocks, this accumulates enough listeners on these 'popular' emitters to trip the leak-detection threshold (see #311561). Defer toolbar creation until the user actually interacts with the code block: - on mouseenter - on editor focus (so Tab can reach the toolbar) - eagerly when screen reader mode is active (so SR can announce it) Pending setAriaLabel / context values from render() are buffered and applied when the toolbar is eventually created. Visibility/display control now operates on the outer toolbar element so it works even before the inner toolbar exists. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Skip lazy toolbar creation when hideToolbar is set Address Copilot review feedback: _ensureToolbar() was creating the toolbar even for code blocks rendered with hideToolbar:true, which defeated the purpose of avoiding shared-emitter listeners for permanently-hidden toolbars. Gate _ensureToolbar() on currentCodeBlockData?.renderOptions?.hideToolbar so all entry points (mouseenter, editor focus, screen reader) skip creation when hidden. render() re-calls _ensureToolbar() when a code block transitions from hidden to visible while screen reader mode is on, so SR users still get a Tab-reachable toolbar. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Respect hideToolbar in _configureForScreenReader Address Copilot review feedback: - _configureForScreenReader was unconditionally setting display:'block', which would override dom.hide() for hideToolbar:true blocks if SR was toggled on after render. - It also called _ensureToolbar() from the constructor (before any render) and after reset(), so pooled/idle instances would eagerly attach menu/context-key listeners in SR mode. Guard the display override on hideToolbar, and only call _ensureToolbar() once currentCodeBlockData is known. The render() path still calls _ensureToolbar() in SR mode when the toolbar is visible. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Respect hideToolbar in non-SR branch of _configureForScreenReader When SR mode toggles off, the else branch was clearing the wrapper's display style even when render() had hidden it via hideToolbar. Mirror the SR path: keep the wrapper hidden when hideToolbar is set. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…t CLI (#311393) * Add /remote slash command with Mission Control integration Adds a /remote slash command to Copilot CLI sessions enabling Mission Control — allowing users to view and steer their coding session from github.com. Key changes: - Register 'remote' command in CopilotCLICommand type and package.json - Implement full Mission Control API flow: auth, git context, session creation, event exporting, and command polling - Use module-level shared state (McSharedState map) to persist MC state across CopilotCLISession instance recreations - Stream SDK events to MC every 500ms with event type filtering - Poll for steering commands every 3s (user_message, abort) - Show notification popup with 'Open in Browser' button and QR-friendly URL - Support /remote off for teardown Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix MC history replay and steering - Replay existing conversation events to MC when /remote starts - Add persistent on('*') listener for MC events between requests - Store SDK session ref in shared state for command poller - Make command poller static to avoid stale instance capture - Clean up persistent listener on teardown Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Filter history replay to skip session lifecycle events Only replay user.message, assistant.message, tool.* events during history replay. Skip session.start and other lifecycle events that would override the remoteSteerable state. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Route MC steering through VS Code chat UI Instead of calling SDK send() directly (which doesn't render in the chat UI), route steering messages through the workbench.action.chat.openSessionWithPrompt.copilotcli command. This ensures steering messages from the web UI appear in VS Code's chat panel with proper rendering. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix CI: remove unused import, fix _sessionResource, update test constructors - Remove unused IRunCommandExecutionService import and constructor param - Replace _sessionResource with SessionIdForCLI.getResource(this.sessionId) - Add IAuthenticationService mock arg to test constructor calls Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Restyle /remote success banner as native info notification (#311516) Add a new 'info' chat content kind that mirrors the existing 'warning' path and renders via ChatErrorContentPart with ChatErrorLevel.Info, which already has blue notification styling (.chat-info-codicon). Expose this via a new ChatResponseInfoPart proposed API and stream.info() method. Use the new API in copilotcli's /remote success path so the banner renders as a native blue info notification card with a persistent 'Open on GitHub' button (vscode.open, no model roundtrip). * feat: add experimental setting to gate /remote command Add github.copilot.chat.cli.remote.enabled (default: false) to gate the /remote slash command behind an experimental setting. The command is hidden from the UI when disabled, and a runtime guard in _handleRemoteControl provides a helpful message if somehow invoked. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat: make /remote toggle on repeated invocation Running /remote when remote is already active now disables it. Explicit /remote on and /remote off still work as before. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * resolve comments. Co-authored-by: Copilot <copilot@github.com> * 💄 Co-authored-by: Copilot <copilot@github.com> * 💄 Co-authored-by: Copilot <copilot@github.com> * feat: implement Mission Control API client and integrate with Copilot CLI session management Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Elijah King <elijahwilliamking@icloud.com> Co-authored-by: Peng Lyu <penn.lv@gmail.com> Co-authored-by: Copilot <copilot@github.com>
…es (#311786) - Fix race condition in reviveTerminal where concurrent calls for the same terminal URI could create duplicate terminal instances. Use a SequencerByKey to serialize revive calls per URI key so the second caller finds the already-created instance. - Add hideFromUser: true to revived agent host tool terminals so they are routed into backgrounded instances instead of terminal groups. This makes them appear in the hidden chat terminals UI entry (TerminalTabsChatEntry) consistent with regular chat tool terminals. Fixes #311709 (Commit message generated by Copilot)
* agentHost: use actual filename in diff editor title Fixes the diff editor showing 'before' as the filename instead of the actual file being edited when using AHP with CLI. - Append basename(filePath) to session DB URI path in fileEditTracker so the diff editor tab displays the real filename. - Add _diffUriMapper override in localAgentHostSessionsProvider to map URIs through toAgentHostUri for consistent diff editor titles with the local agent host. Fixes #311509 (Commit message generated by Copilot) * test: add coverage for basename in session-db URI and local diffUriMapper
* Handle things way better Co-authored-by: Copilot <copilot@github.com> * See if we can avoid using unknown in test Co-authored-by: Copilot <copilot@github.com> * better handle feedback Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com>
* Fix remote agent host protocol client lifecycle (Written by Copilot) * Address remote client disposal review feedback (Written by Copilot)
Bump @github/copilot in root and remote package.json to ^1.0.28 to match the version pinned by the bundled copilot extension (extensions/copilot). Also adds a real-SDK integration test for listModels that subscribes to the root state, authenticates, and asserts every model has a well-formed shape (id, name, numeric maxContextWindow). This guards against SDK schema drift like the issue in 1.0.34, where the server returned models with optional capabilities.limits, causing _listModels to throw a TypeError that _refreshModels silently swallowed (resulting in no models in the UI). Drive-by: fix stale provider id 'copilot' -> 'copilotcli' in the same test file. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix int id. Co-authored-by: Copilot <copilot@github.com> * 💄 --------- Co-authored-by: Copilot <copilot@github.com>
* Fix broken sessions list From #311751 Co-authored-by: Copilot <copilot@github.com> * fix tests --------- Co-authored-by: Copilot <copilot@github.com>
Agent host workspace folders surface customizations through AHP (session state + findAgentSkills), not via filesystem scanning. Including them in PromptFilesLocator caused a resourceList JSON-RPC per configured location for every nonexistent .github / .claude folder on the remote, producing noisy '[RemoteAgentHostProtocol] Request N failed' / 'Failed to resolve files at location' logs every discovery cycle. Filter vscode-agent-host:// folders out of getWorkspaceFolders() getWorkspaceFolderRoots, findAgentMDsInFolder, and the workspace-root short-circuit in resolveFilesAtLocation. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )